[アップデート] CloudFormation で AWS Certificate Manager のDNS検証を自動化できるようになりました
コンサルティング部の西野です。
AWS Certificate Manager (ACM) で取得した SSL/TLS 証明書を DNS 検証するまでのステップを CloudFormation のテンプレート一つで自動化できるようになりました。
AWS Certificate Manager Extends Automation of Certificate Issuance Via CloudFormation
従来は Route 53 などで管理される Hosted Zone に CNAME レコードを個別に登録する必要がありましたが、このたびのアップデートにより CNAME レコードの登録までをCloudFormation テンプレートが担ってくれます。
また、下記のプロパティもあわせて追加されています。
- 証明書の認証機関として ACM のプライベート CA を指定するプロパティ(
CertificateAuthorityArn
) - Certificate Transparency ロギングをオプトイン・オプトアウトするためのプロパティ(
CertificateTransparencyLoggingPreference
)
詳細については CloudFormation の下記ドキュメントをご覧ください。
AWS::CertificateManager::Certificate
やってみた
ACM に www.<黒塗り>.net
を登録して DNS 検証を行なうところまでやってみました。
CloudFormation テンプレート
テンプレートとして下記のものを使用します。
DomainValidationOptions
にHostedZoneId
を指定してやるところが肝です。
AWSTemplateFormatVersion: "2010-09-09" Resources: Certificate: Type: AWS::CertificateManager::Certificate Properties: DomainName: www.<黒塗り>.net DomainValidationOptions: - DomainName: www.<黒塗り>.net HostedZoneId: Z040XXXXXXXXXXXXXXXX ValidationMethod: DNS
Hosted Zone ID の確認
マネージメントコンソールから対象の Hosted Zone の ID を確認します。
AWS CLIの場合は下記のコマンドを使ってください。
$ aws route53 list-hosted-zones { "HostedZones": [ { "Id": "/hostedzone/Z040XXXXXXXXXXXXXXXX", "Name": "<黒塗り>.net.", "CallerReference": "RISWorkflow-RD:59dXXXXd-XXXX-XXXX-XXXX-8558XXXX0287", "Config": { "Comment": "HostedZone created by Route53 Registrar", "PrivateZone": false }, "ResourceRecordSetCount": 2 } ] }
CloudFormation スタックの作成と経過観察
上記のテンプレートでスタックを作成します。
スタック作成後、ACM のコンソールを見に行くとwww.<黒塗り>.net
の証明書が作成されています。
Hosted Zone Z040XXXXXXXXXXXXXXXX
を見に行くと検証用の CNAME レコードが追加されています。しばらく待ちます。
証明書の DNS 検証が無事終わりました。
スタックを見に行くと CNAME レコードの登録部分まで情報を出力してくれていることがわかります。
注意点
証明書が不要になった場合にスタック(もしくはType: AWS::CertificateManager::Certificate
のリソース)を削除しても、DNS 検証に用いられた CNAME レコードは対象の Hosted Zone に残ったままです。気になる方は手動で削除をしてください。
終わりに
このブログがほんの少しでも世界を良くできれば嬉しいです。
コンサルティング部の西野 (@xiyegen) がお送りしました。